package com.hspedu.encap;

/**
 * @Author Stringzhua
 * @Date 2024/3/1 15:51
 * description:
 * 定义两个类:Account和AccountTest类体会java的封装性
 * 1.Account类要求具有属性:
 * 姓名(长度为2位~4位)
 * 余额(必须大于20)
 * 密码(必须是六位)
 * 如果不满足m则给出提示信息,并给默认值(程序员自己定)
 * 2.通过setXxx的方法给Account的属性赋值
 * 3.在AccountTest中进行测试
 * <p>
 * 提示知识点:
 * String name="";
 * int len=name.length();//字符串的长度
 */
public class Account {
    //为了封装,将三个属性全部设置为私有private
    private String name;
    private double balance;//余额
    private String pwd;//密码

//提供两个构造器

    public Account() {//无参构造器
    }

    //有参构造器
    public Account(String name, double balance, String pwd) {
        this.setName(name);
        this.setBalance(balance);
        this.setPwd(pwd);
    }

    public String getName() {
        return name;
    }

    //    姓名(长度为2位~4位)
    public void setName(String name) {
        if (name.length() >= 2 && name.length() <= 4) {
            this.name = name;
        } else {
            System.out.println("姓名(长度为2位~4位),默认值:无名");
            this.name = "无名";
        }
    }

    public double getBalance() {
        return balance;
    }

    //    余额(必须大于20)
    public void setBalance(double balance) {
        if (balance > 20) {
            this.balance = balance;
        } else {
            System.out.println("余额(必须大于20),默认为0");
            this.balance = 0;
        }
    }

    public String getPwd() {
        return pwd;
    }

    //    密码(必须是六位)
    public void setPwd(String pwd) {
        if (pwd.length() == 6) {
            this.pwd = pwd;
        } else {
            System.out.println("密码(必须是六位),默认密码为000000");
            this.pwd = "000000";
        }
    }

    //显示账号信息
    public void showInfo() {
        //可以增加权限的校验
        System.out.println("账号信息 name=" + name + "  余额=" + balance + "  密码" + pwd);
//        if(){
//            System.out.println("账号信息 name=" + name + "余额=" + balance + "密码" + pwd);
//        }else{
//            System.out.println("你无权查看~");
//        }
    }
}
